package com.flute.icrawler.policy.bdb.storage;

public interface IStorage {

	/**
	 * 存数据
	 * 
	 * @param key
	 * @param value
	 */
	public void put(Object key, Object value);

	/**
	 * 删除数据
	 * 
	 * @param key
	 */
	public void delete(Object key);

	/**
	 * @deprecated
	 */
	public Object next();

	/**
	 * 取当前key的下一条数据（如果primaryKey==null则取第一条数据）
	 * 
	 * @param primaryKey
	 * @return
	 */
	public Object next(Object primaryKey);

	/**
	 * 查询数据
	 * 
	 * @param key
	 * @return
	 */
	public Object search(Object key);

	/**
	 * 判断是否包含key
	 * 
	 * @param key
	 * @return
	 */
	public boolean isContains(Object key);

	/**
	 * 获取数据库名称
	 * 
	 * @return
	 */
	public String getName();

	/**
	 * 同步数据
	 */
	public void sync();

	/**
	 * 关闭数据库
	 */
	public void close();

	/**
	 * 获取第一条数据
	 * 
	 * @return
	 */
	public Object getFirst();

	/**
	 * 获取数据库锁
	 */
	public void lock();

	/**
	 * 释放数据库锁
	 */
	public void unlock();

	/**
	 * 数据库数据量
	 * 
	 * @return
	 */
	public long count();
}
